package org.dromara.xhlj.domain.vo;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xhlj.domain.XhljActivity;
import org.dromara.xhlj.domain.XhljConferenceInfo;
import org.dromara.xhlj.domain.XhljMeetingSchedule;
import org.dromara.xhlj.domain.XhljVenues;
import org.dromara.xhlj.domain.XhljActivityAgenda;
import org.dromara.xhlj.domain.XhljActivityDiscussion;
import org.dromara.xhlj.domain.XhljActivityTask;
import org.dromara.xhlj.domain.XhljMeetingSchedule;
import org.dromara.xhlj.domain.XhljPoster;
import org.dromara.xhlj.domain.XhljTopicActivityCollect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.core.utils.tree.TreeCruxField;
import org.dromara.wx.domain.WxUser;
import org.dromara.wx.domain.vo.WxUserVo;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 活动视图对象 xhlj_activity
 *
 * @author yf
 * @date 2024-07-28
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XhljActivity.class)
public class XhljActivityVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 活动ID
     */
    @ExcelProperty(value = "活动ID")
    private Integer activityId;
    /**
     * 活动标题
     */
    @ExcelProperty(value = "活动标题")
    private String activityTitle;
    /**
     * 大会ID
     */
    @ExcelProperty(value = "大会ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = XhljConferenceInfo.TRANS_ID_TO_VO, mapper = "conferenceInfoId")
    private XhljConferenceInfoVo conferenceInfo;
    private Integer conferenceInfoId;
    /**
     * 大会日程ID
     */
    @ExcelProperty(value = "大会日程ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = XhljMeetingSchedule.TRANS_ID_TO_VO, mapper = "meetingScheduleId")
    private XhljMeetingScheduleVo meetingSchedule;
    private Integer meetingScheduleId;
    /**
     * 会场ID
     */
    @ExcelProperty(value = "会场ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = XhljVenues.TRANS_ID_TO_VO, mapper = "venuesId")
    private XhljVenuesVo venues;
    private Integer venuesId;
    /**
     * 创建人sys_user（大会管理员）
     */
    @ExcelProperty(value = "创建人sys_user")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = SysUser.TRANS_ID_TO_VO, mapper = "createBy")
    private SysUserVo sysUser;
    private Integer createBy;
    /**
     * 活动内容
     */
    @ExcelProperty(value = "活动内容")
    private String activityContent;
    /**
     * 活动地点
     */
    @ExcelProperty(value = "活动地点")
    private String activityLocation;
    /**
     * 活动位置地图
     */
    @ExcelProperty(value = "活动位置地图")
    private String activityMap;
    /**
     * 活动开始时间
     */
    @ExcelProperty(value = "活动开始时间")
    private Date activityStartTime;
    /**
     * 活动结束时间
     */
    @ExcelProperty(value = "活动结束时间")
    private Date activityEndTime;
    /**
     * 活动报名人数
     */
    @ExcelProperty(value = "活动报名人数")
    private Integer signUpCount;
    /**
     * 活动热度
     */
    @ExcelProperty(value = "活动热度")
    private Integer activityPopularity;
    /**
     * 活动订阅量
     */
    @ExcelProperty(value = "活动订阅量")
    private Integer subscriptionCount;
    /**
     * 活动类型（0=会议（线上直播/线下报名），1=展商展销（仅线下报名），2=安全特训营（仅线下报名），3=精华特刊（仅线下报名），4=作品征集（仅线下报名），5=数字成果展（仅线下报名））
     */
    @ExcelProperty(value = "活动类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "activity_type")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "activity_type", mapper = "activityType")
    private String activityTypeDictData;
    private String activityType;
    /**
     * 活动标签（0=网络安全，1=AI人工智能，2=数字安全，3=数字经济，4=智慧城市，5=特色活动）
     */
    @ExcelProperty(value = "活动标签", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "activity_tags")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "activity_tags", mapper = "activityTags")
    private String activityTagsDictData;
    private String activityTags;
    /**
     * 活动图片
     */
    @ExcelProperty(value = "活动图片")
    private String activityImage;
    private String activityImageFirst;
    /**
     * 直播回放
     */
    @ExcelProperty(value = "直播回放")
    private String activityLiveFile;
    /**
     * 直播链接
     */
    @ExcelProperty(value = "直播链接")
    private String liveStreamLink;
    /**
     * 活动状态（0=未开始，1=进行中，2=已结束）
     */
    @ExcelProperty(value = "活动状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "activity_status")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "activity_status", mapper = "activityStatus")
    private String activityStatusDictData;
    private String activityStatus;
    /**
     * 活动报名费金额
     */
    @ExcelProperty(value = "活动报名费金额")
    private BigDecimal activityRegistrationPrice;
    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 活动议程 子列表
     */
    @Translation(type = XhljActivityAgenda.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljActivityAgendaVo> xhljActivityAgendaVoList;
    /**
     * 会议交流 子列表
     */
    @JsonIgnore
    @Translation(type = XhljActivityDiscussion.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljActivityDiscussionVo> xhljActivityDiscussionVoList;
    /**
     * 活动任务 子列表
     */
    @JsonIgnore
    @Translation(type = XhljActivityTask.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljActivityTaskVo> xhljActivityTaskVoList;
    /**
     * 大会日程 子列表
     */
    @JsonIgnore
    @Translation(type = XhljMeetingSchedule.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljMeetingScheduleVo> xhljMeetingScheduleVoList;
    /**
     * 大会海报 子列表
     */
    @JsonIgnore
    @Translation(type = XhljPoster.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljPosterVo> xhljPosterVoList;
    /**
     * 活动订阅 子列表
     */
    @Translation(type = XhljTopicActivityCollect.TRANS_ID_TO_VO_LIST, mapper = "activityId" , other = "activity_id")
    private List<XhljTopicActivityCollectVo> xhljTopicActivityCollectVoList;
}
